<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>回顾Objectdefineproperty</title>
</head>

<body>
    <div class="app">
        <div>
        </div>
    </div>
    <script type="text/javascript">
        let number = 18;

        let person = {
            name: '张三',
            sex: "男",
            // age:18
        }
        // Object.defineProperty(person, 'age', {
        //     value: 18,
        //     enumerable: true,//控制属性是否可以枚举(遍历)，默认值是false
        //     writable: true,//控制属性可以被修改，默认值是false
        //     configurable: true//控制属性可以被删除，默认值是false
        // })
        Object.defineProperty(person, 'age', {
            // 当有人读取person的age属性时，get函数(getter)就会被调用，且返回值就是age的值
            get() {
                console.log("有人读取age属性了")
                return number;
            },
            // 当有人修改person的age属性时，get函数(setter)就会被调用，且返回值就是age的值
            set(value) {
                console.log("有人修改age属性了，且值是", value)
                number = value
            }
        })

        console.log(Object.keys(person))
        console.log(person)
    </script>
</body>

</html>